package model;

import java.util.ArrayList;
import java.util.List;

import javax.swing.table.AbstractTableModel;

import entidade.Usuario;

@SuppressWarnings("serial")
public class UsuarioTableModel extends AbstractTableModel {
	
	//constantes que v�o representar as colunas
    //(s� para facilitar o entendimento do c�digo)
    private final int COL_CODIGO = 0;
    private final int COL_NOME = 1;
    private final int COL_LOGIN = 2;
 
    //lista dos produtos que ser�o exibidos
    private List<Usuario> usuarios;
 
    public UsuarioTableModel() {
        usuarios = new ArrayList<>();
    }
 
    public UsuarioTableModel(List<Usuario> lista) {
        this();
        usuarios.addAll(lista);
    }
 
    public int getRowCount() {
        //cada produto na lista ser� uma linha
        return usuarios.size();
    }
 
    public int getColumnCount() {
        //vamos exibir s� Nome e Quantidade, ent�o s�o 2 colunas
        return 3;
    }
 
    @Override
    public String getColumnName(int column) {
        //qual o nome da coluna
        if (column == COL_CODIGO) {
            return "C\u00F3digo";
        } 
        if (column == COL_NOME) {
            return "Nome";
        }
        if (column == COL_LOGIN){
        	return "Login";
        }
        return "";
    }
 
    @Override
    public Class<?> getColumnClass(int columnIndex) {
        //retorna a classe que representa a coluna
        if (columnIndex == COL_CODIGO) {
            return Integer.class;
        }
        if (columnIndex == COL_NOME) {
            return String.class;
        }
        if (columnIndex == COL_LOGIN){
        	return String.class;
        }
        return String.class;
    }
 
    public Object getValueAt(int rowIndex, int columnIndex) {
        //pega o produto da linha
        Usuario u = usuarios.get(rowIndex);
 
        //verifica qual valor deve ser retornado
        if (columnIndex == COL_CODIGO) {
            return u.getCodigo();
        }
        if (columnIndex == COL_NOME) {
            return u.getNome();
        }
        if (columnIndex == COL_LOGIN){
        	return u.getLogin();
        }
        return "";
    }
 
    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        //pega o produto da linha
        Usuario u = usuarios.get(rowIndex);
 
        //verifica qual valor vai ser alterado
        if (columnIndex == COL_CODIGO) {
            u.setCodigo(Integer.parseInt(aValue.toString()));
        }
        if (columnIndex == COL_NOME) {
            u.setNome(aValue.toString());
        }
        if (columnIndex == COL_LOGIN) {
        	u.setLogin(aValue.toString());
        }
 
        //avisa que os dados mudaram
        fireTableDataChanged();
    }
 
    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        //no nosso caso todas v�o ser edit�veis, entao retorna true pra todas
        return false;
    }
    
    public Usuario get(int pos){
    	return usuarios.get(pos);
    }
    
}
